import fs from 'fs'
import path from 'path'

// 读取环境变量文件
function loadEnvFile(filePath) {
  try {
    const content = fs.readFileSync(filePath, 'utf8')
    const env = {}
    content.split('\n').forEach((line) => {
      const trimmed = line.trim()
      if (trimmed && !trimmed.startsWith('#')) {
        const [key, ...valueParts] = trimmed.split('=')
        if (key && valueParts.length > 0) {
          let value = valueParts.join('=').trim()
          // 移除引号
          value = value.replace(/^['"]|['"]$/g, '')
          env[key.trim()] = value
        }
      }
    })
    return env
  } catch (error) {
    console.error('读取环境变量文件失败:', error)
    return {}
  }
}

console.time('转换开始')

// 从命令行参数获取env文件名，默认为point
const envMode = process.argv[2] || 'point'
const envFilePath = `./.env.${envMode}`

console.log(`使用环境文件: ${envFilePath}`)

// 读取环境变量
const env = loadEnvFile(envFilePath)
const basePath = env.VITE_BASE_PATH || 'metaPoint'

// 使用环境变量中的路径作为打包目录
const distPath = `./dist/${basePath}/index.html`

if (!fs.existsSync(distPath)) {
  console.error(`文件不存在: ${distPath}`)
  process.exit(1)
}

let htmlText = fs.readFileSync(distPath, 'utf8')
let resultText = ''
let htmlArr = htmlText.match(/.*\n/g) || []

// 在现有的路径替换逻辑中添加
htmlArr.forEach((str) => {
  str = str.replace(/\s?nomodule\s?/g, ' ')
  str = str.replace(/\s?crossorigin\s?/g, ' ')
  str = str.replace(/data-src/g, 'src')

  // 替换资源路径
  str = str.replace(/href="\.\/assets\//g, `href="../${basePath}/assets/`)
  str = str.replace(/src="\.\/assets\//g, `src="../${basePath}/assets/`)
  str = str.replace(/href="\/favicon\.ico"/g, `href="../${basePath}/favicon.ico"`)

  // 添加语言文件路径处理（如果HTML中有引用）
  str = str.replace(/\/language\//g, '../../language/')

  if (!/type="module"/i.test(str)) resultText += str
})

fs.writeFileSync(distPath, resultText, 'utf8')
console.timeEnd('转换成功')
console.log(`路径已更新为: ../${basePath}/`)
console.log(`处理的文件: ${distPath}`)
